﻿using System;
using System.IO;
using Topshelf;

namespace AVCJobDispatcherWindows
{
    class Program
    {
        static void Main(string[] args)
        {
            HostFactory.Run(x =>//1
            {
                x.Service<MainService>(s => //2
                {
                    s.ConstructUsing(name => new MainService());//3
                    s.WhenStarted(tc => tc.OnStart());//4
                    s.WhenStopped(tc => tc.OnStop());//5
                });

                x.RunAsLocalSystem();//6
                x.EnableServiceRecovery(service =>//7
                {
                    service.RestartService(TimeSpan.FromSeconds(1));//8
                });
                x.SetDescription("AVCJobDispatcher");//9
                x.SetDisplayName("AVCJobDispatcher");//10
                x.SetServiceName("AVCJobDispatcher");//11
                x.StartAutomaticallyDelayed();//12

                //1.设置服务主机使用HostFactory.Run()来创建并运行一个Topshelft服务。
                //2.设置Topshelf使用类型MainService作为服务类。
                //3.配置如何创建一个服务的实例，这里采用的是使用关键字new来实例化一个MainService对象。
                //4.设置当服务启动时执行的操作。
                //5.设置当服务停止时执行的操作。
                //6.设置将服务以本地系统身份运行。
                //7.启动恢复服务模式(当服务意外停止后自动恢复)。
                //8.设置每次失败后固定的自动恢复服务的延迟时间为1秒。
                //9.设置Topshelf服务在Windows服务中的描述信息。
                //10.设置Topshelf服务在Windows服务中的显示名称。
                //11.设置Topshelf服务在Windows服务中的服务名称。
                //12.设置Topshelf服务随Windows启动时自动运行(延迟)。
            });
            Console.Read();
        }
    }
}
